import {MOBIL_H5_URL} from './app/config/config';
/**
 * @author csw
 * @description:检测；浏览器类型、环境、版本、及登录设备类型，网页环境
 * @date 2020-10-21 11:16:53
 */
export class TestBrowser {
    // 检测机制
    public static BrowserType() {
        console.log(MOBIL_H5_URL);
// 初始化检测浏览器的环境及登录端类型-->浏览器指纹方案
        const ua = navigator.userAgent.toLowerCase();
        // test UA
        const testUa = regexp => regexp.test(ua);
        // test version
        const testVs = regexp => ua.match(regexp).toString().replace(/[^0-9|_.]/g, '').replace(/_/g, '.');
        let system = 'unknow'; // 检测系统
        let systemVs = 'unknow'; // 检测系统版本
        let platform = 'unknow'; // 检测PC还是移动端
        // 检测设备系统类型化
        if (testUa(/windows|win32|win64|wow32|wow64/g)) {
            system = 'windows'; // windows系统
            // @ts-ignore
        } else if (testUa(/macintosh|macintel/g)) {
            // 检测macos系统
            system = 'macos'; // macos系统
        } else if (testUa(/x11/g)) {
            // 检测linuxt系统
            system = 'linux'; // linux系统
        } else if (testUa(/android|adr/g)) {
            // 检测ad系统
            system = 'android'; // ad系统
            window.location.href = MOBIL_H5_URL;
            // @ts-ignore
        } else if (testUa(/ios|iphone|ipad|ipod|iwatch/g)) {
            system = 'ios'; // ios系统
            // @ts-ignore
            window.location.href = MOBIL_H5_URL;
        }
        // 检测平台类型PC或者移动端
        if (system === 'windows' || system === 'macos' || system === 'linux') {
            platform = 'desktop'; // 桌面端
        } else if (system === 'android' || system === 'ios' || testUa(/mobile/g)) {
            platform = 'mobile'; // 移动端
            window.location.href = MOBIL_H5_URL;
        }
        // 检测系统版本
        if (system === 'windows') {
            // 检测windows版本
            if (testUa(/windows nt 5.0|windows 2000/g)) {
                systemVs = '2000';
            } else if (testUa(/windows nt 5.1|windows xp/g)) {
                systemVs = 'xp';
            } else if (testUa(/windows nt 5.2|windows 2003/g)) {
                systemVs = '2003';
            } else if (testUa(/windows nt 6.0|windows vista/g)) {
                systemVs = 'vista';
            } else if (testUa(/windows nt 6.1|windows 7/g)) {
                systemVs = '7';
            } else if (testUa(/windows nt 6.2|windows 8/g)) {
                systemVs = '8';
            } else if (testUa(/windows nt 6.3|windows 8.1/g)) {
                systemVs = '8.1';
            } else if (testUa(/windows nt 10.0|windows 10/g)) {
                systemVs = '10';
            }
        } else if (system === 'macos') {
            // 检测macos版本
            systemVs = testVs(/os x [\d._]+/g);
        } else if (system === 'android') {
            // 检测ad
            systemVs = testVs(/android [\d._]+/g);
            window.location.href = MOBIL_H5_URL;
        } else if (system === 'ios') {
            // 检测ios
            systemVs = testVs(/os [\d._]+/g);
            window.location.href = MOBIL_H5_URL;
        }
        // 检测浏览器内核-载体
        let engine = 'unknow';  // 内核
        let supporter = 'unknow'; // 载体
        if (testUa(/applewebkit/g)) {
            engine = 'webkit'; // webkit内核
            if (testUa(/edge/g)) {
                supporter = 'edge'; // edge浏览器
            } else if (testUa(/opr/g)) {
                supporter = 'opera'; // opera浏览器
            } else if (testUa(/chrome/g)) {
                supporter = 'chrome'; // chrome浏览器
            } else if (testUa(/safari/g)) {
                supporter = 'safari'; // safari浏览器
            }
        } else if (testUa(/gecko/g) && testUa(/firefox/g)) {
            engine = 'gecko'; // gecko内核
            supporter = 'firefox'; // firefox浏览器
        } else if (testUa(/presto/g)) {
            engine = 'presto'; // presto内核
            supporter = 'opera'; // opera浏览器
        } else if (testUa(/trident|compatible|msie/g)) {
            engine = 'trident'; // trident内核
            supporter = 'iexplore'; // iexplore浏览器
        }
// 内核版本+载体版本
// 内核版本
        let engineVs = 'unknow';
        if (engine === 'webkit') {
            engineVs = testVs(/applewebkit\/[\d._]+/g);
        } else if (engine === 'gecko') {
            engineVs = testVs(/gecko\/[\d._]+/g);
        } else if (engine === 'presto') {
            engineVs = testVs(/presto\/[\d._]+/g);
        } else if (engine === 'trident') {
            engineVs = testVs(/trident\/[\d._]+/g);
        }

// 载体版本
        let supporterVs = 'unknow';
        if (supporter === 'chrome') {
            supporterVs = testVs(/chrome\/[\d._]+/g);
        } else if (supporter === 'safari') {
            supporterVs = testVs(/version\/[\d._]+/g);
        } else if (supporter === 'firefox') {
            supporterVs = testVs(/firefox\/[\d._]+/g);
        } else if (supporter === 'opera') {
            supporterVs = testVs(/opr\/[\d._]+/g);
        } else if (supporter === 'iexplore') {
            supporterVs = testVs(/(msie [\d._]+)|(rv:[\d._]+)/g);
        } else if (supporter === 'edge') {
            supporterVs = testVs(/edge\/[\d._]+/g);
        }
// 外壳+外壳版本(主要检测国内的一些浏览器)
        let shell = 'none';
        let shellVs = 'unknow';
        if (testUa(/micromessenger/g)) {
            shell = 'wechat'; // 微信浏览器
            shellVs = testVs(/micromessenger\/[\d._]+/g);
            window.location.href = MOBIL_H5_URL;
        } else if (testUa(/qqbrowser/g)) {
            shell = 'qq'; // QQ浏览器
            shellVs = testVs(/qqbrowser\/[\d._]+/g);
            console.log( shell);
            console.log( shellVs);
            // window.location.href = MOBIL_H5_URL;
        } else if (testUa(/ucbrowser/g)) {
            shell = 'uc'; // UC浏览器
            shellVs = testVs(/ucbrowser\/[\d._]+/g);
            window.location.href = MOBIL_H5_URL;
        } else if (testUa(/qihu 360se/g)) {
            shell = '360'; // 360浏览器(无版本);
        } else if (testUa(/2345explorer/g)) {
            shell = '2345'; // 2345浏览器
            shellVs = testVs(/2345explorer\/[\d._]+/g);
        } else if (testUa(/metasr/g)) {
            shell = 'sougou'; // 搜狗浏览器(无版本)
        } else if (testUa(/lbbrowser/g)) {
            shell = 'liebao'; // 猎豹浏览器(无版本)
        } else if (testUa(/maxthon/g)) {
            shell = 'maxthon'; // 遨游浏览器
            shellVs = testVs(/maxthon\/[\d._]+/g);
        }
        // 使用参数输出，便于外部判断使用
        return Object.assign({
            engine, // webkit gecko presto trident
            engineVs,
            platform, // desktop mobile
            supporter, // chrome safari firefox opera iexplore edge
            supporterVs,
            system, // windows macos linux android ios
            systemVs
        }, shell === 'none' ? {} : {
            shell, // wechat qq uc 360 2345 sougou liebao maxthon
            shellVs
        });
    }
}

// 自定义弹窗

